#include "BinaryTree.h"
// 判断二叉树是否是完全二叉树
// 完全二叉树的层序应该是 A B C D E F G H NULL NULL NULL... 后面没有节点了
int BinaryTreeComplete(BTNode* root)
{
    Queue q;
    QueueInit(&q);
    if(root!=NULL)  QueuePush(&q,root);//树不为空 插入根节点
    while(!QueueEmpty(&q))//为空
    {
        QDataType front = QueueFront(&q);//BTNode*=QDataType
        if(front==NULL) break; //如果是完全二叉树的话NULL后面不应该有节点，所以退出循环
            QueuePop(&q);//出列
    
            QueuePush(&q,front->_left);//左子节点入列

            QueuePush(&q,front->_right);//右子节点入列
    }
    while(!QueueEmpty(&q))//开始判断后面是否全NULL
    {
        QDataType front = QueueFront(&q);
        if(front !=NULL) 
        {
            QueueDestroy(&q);   
            return 0; //边入边出，不为全NULL那就是不完全二叉树
        }
        
        
       
        QueuePop(&q);
    }
    QueueDestroy(&q);
    return 1;
}